using Gateway.IApplication.BaseInput;
using Gateway.IApplication.Role.Input;
using Gateway.Infrastructure.AutoDI;

namespace Gateway.IApplication.Role;

/// <summary>
/// 角色服务
/// </summary>
public interface IRoleApp : IDependency
{
    /// <summary>
    /// 创建
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    Task<string> Add(CreateRoleInput input);

    /// <summary>
    /// 更新
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    Task<bool> Update(UpdateRoleInput input);

    /// <summary>
    /// 删除
    /// </summary>
    /// <param name="id"></param>
    /// <returns></returns>
    Task<bool> Remove(string id);

    /// <summary>
    /// 禁用/启用
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    Task<bool> Disable(DisableInput input);

    /// <summary>
    /// 设置菜单 以及权限
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    Task<bool> SetMenusAndPermission(SetMenusAndPermissionInput input);
}